The present disclosure generally relates to electronically transmitting data between computing devices. Modern wireless data communication systems provide bandwidth for use by rich computing applications on mobile devices. For example, users of wireless devices such as smart phones can make telephone calls, receive emails, and even receive full motion audio/video broadcasts on their mobile devices. Every time a great new service is offered, users of wireless devices consume data associated with the service, requiring more and more bandwidth. As a result, the airwaves are filled with data going to and from an increasing number of wireless computing devices that each require growing amounts of data.
A data packet transmitted in such a wireless communication system may not always be received by an intended recipient computing device. Interfering signals from other computing devices or from natural phenomena may overpower the portion of the signal that includes the data packet so that the entire data packet, or portions thereof, are unintelligible to the receiving device or include errors. Similarly, either the transmitting or receiving device may temporarily move behind an obstruction, so that communication signals between the devices are blocked for a temporary period of time.
Because data packets are sometimes not received, a device that receives a packet may send an acknowledgment back to the transmitting device in order to let the transmitting device know that the packet was received. If the transmitting device does not receive an acknowledgment for a particular packet within a time period, the transmitting device may retransmit the particular packet.